EXIT MONITOR ASCII 1981年 6月号掲載 マシン語 09500H-09E37H S:09500H 起動方法 モニタから起動 MZ−80の機械語モニタ EXITモニタを御紹介します。 EXIT(EXamine&deposIT)は’79年10月号で掲載した APPLE用のダンプリスト入力ツールですが、画面にダンプされている メモリ内容をカーソルコントロールしてダイレクトに書き換えられるものです。 さらにカーソルコントロールは画面内のアドレスエリアだけで行われるものでなく、 エリアのそものも影響を受けます。 すなわちカーソルの移動が画面で処理しきれなくなると、 必要に応じて自動的にUPスクロール、又は前の1行8バイトを表示します。 感じとしては、CRTモをメモリマップののぞき窓として カーソルコントロール及び各コマンドで メモリ上を移動し、表示し、書き変えるものです。 また8バイトごとのチェックサムが表示され、メモリ内容を書き変えるたびに リアルタイムで計算されますので、チェックサムのついたダンプリストを 入力する際には非常に便利です。 モニタのコマンド  モニタのコマンドは以下の9種があり、  モニタのプロントである”]”が表示されているときに  1文字入力するだけで働きます。  アドレス指定などはすべて16進数によりますので注意して下さい。  E……EXIT   Eに続けて4桁の16進数でアドレスを入力すると、   EXITモードとなります。  G……GO   Gに続けて4桁の16進数でアドレスを指定すると、   そのアドレスからの機械語プログラムにジャンプします。  C……CALL   Cに続けて4桁の16進数でアドレスを指定すると、   そのアドレスからの機械語プログラムにジャンプします。   GOコマンドと異なるのは、最後のリターン命令(C9)で   このモニタに戻るという点です。   なお、GOコマンドでは、どうなるか不定です。  S……SAVE   このコマンドはカセットテープに機械語プログラムを   SAVEするものです。   Sを押すとまず、ファイル名を聞いてきますので   16文字以下の任意の名前を入力して下さい。   次にFROM?、TO?、START?と   3種類のアドレスを聞いてきますので、それぞれ   4桁の16進数で入力してください。   FORM?にはSAVEしたいエリアの先頭番地を、   TO?には最終番地を、   START?にはこのテープをLOADした時の   スタート番地をそれぞれ入力します。   このコマンドでSAVEしたテープは   オートスタートタイプになります。  L……LOAD   テープから、機械語プログラムやデータを   LOADするコマンドです。   Lを押すとすぐPLAYと表示されますので、   LOADしたいテープを装着し   PLAYボタンを押して下さい。   するとファイルネームを読み込んで   これを表示し、LOAD?と聞いてきますので、   LOADする時はYを押して下さい。   それ以外のキーではそのファイルはスキップし、   次のファイルをサーチします。   なお、LOAD中にSHIFT+BREAK押すと   もニタのコマンド待ちに戻りますが、   最後に表示したファイル名を再び表示し、   LOAD?と聞いてくる場合もありますので、   その際にはさらにSHIFT+BREAKを押して下さい。  X……TRANSFER   これはブロック転送をするコマンドです。   Xを押すとFROM?と聞いてきますので、   転送したいブロックの先頭アドレスを   4桁の16進数で入力します。   次にTO?と聞いてきますので、   転送したいブロックの最終アドレスを   同様に入力します。   そしてTOP?と聞いてきますので、   転送先の先頭アドレスを同様に入力します。   なお転送エリアと転送先に重なりあってもかまいませn。  M……128bytes CHECKSUM   128バイトごとのチェックサムを算出し、表示します。   チェックしたいエリアの先頭と   最後のアドレスを入力して下さい。  P……PRINT   EXITの形式でプリンタにダンプリストを出力する   コマンドです。   Pに続けてダンプブロックの先頭アドレス、   最終アドレスをそれぞれ4桁の16進数で指定します。   なお、チェックサムの算出の都合上、   必ず1行8バイト単位で出力されますから、   たとえあbP 1200 1283とすると   $1200〜$1287を出力することになりますので   注意して下さい。  SHIFT+BREAK……BYE   モニタSP−1002に戻ります。   再びEXITモニタに戻るにはGOTO$9500とします。 EXITモード  モニタのEコマンドでEXITモードになります。  画面構成は左からその行の先頭データのアドレス、  8バイト分のデ−タ、そのASCIIダンプ、  その行のチェックサムとなっています。  このチェックサムは、表示アドレスの上位及び、下位  そして8バイト分の和の下1バイトとなっています。  カーソルはダンプされているデータ上を、  カーソルコントロールキーにより任意に移動できます。  カーソルが画面最上段にある時に、  ↑キーを押すとDOWNスクロールし、前の1行をダンプします。  最下行でも同様にUPスクロールします。  すなわちカーソルが画面内のエリアで移動しきれなくなった時に、  画面がスクロールします。  ダンプされているデータの変更は0〜Fのキーと  グラフィックキー部に図の様に配置されたHEXキーによります。  このHEXキーはEXITモード以外でも  16進数を入力するときに使用可能です。  HEXキー、カーソルコントロールキーの他に  以下の8つのコマンドがあります。   J……ダンプチェンジ    画面の先頭アドレスを変更します。    Jを押すとカーソルが画面左上に移りますので、    4桁の16進数で希望のアドレスを指定して下さい。    ダンプエリアに表示されるアドレスは、    チェックサム算出の関係で末尾が必ず0か8で    なければなりませんので、    EXITモードに移るEコマンドやこのJコマンドで端数を    指定しても、末尾0、8のアドレスからのダンプになります。    但し、カーソルは指定アドレスのデータの部分に移ります。   N……ページチェンジ    画面の次ノアドレスからダンプします。   U……ASCII入力    カーソルが右のASCIIダンプに移動します。    そして以降のキー入力をASCIIコードとして    メモリにストアします。    この場合にもカーソルコントロールキーは    カーソル移動に使用できます。    CRキーは$0Dがストアされます。    16進入力モードに戻るにはCLRキーを押して下さい。   HOME……カーソルホーム    カーソルを画面の最初のダンプの位置に移動します。   INST……インサート    4ビット単位、すなわち16進数の1文字のインサートをします。    現在のカーソル位置に0が入り、その行の残りがその行末にずれ    行末の4ビットは消えます。    もちろんメモリからも消えてしまいます。   DEL……デリート    インサートと同様に4ビット単位でデリートします。    カーソルの1つ左が消えて、    その行はカーソル以降が4ビットずつずれて行末には0が入ります。    インサート、デリートともASCIIコードの入力時には、    それぞれのコードが入力されるので使用できません。   CR……改行    カーソルが次の行の先頭に移動します。    これもASCIIコード入力時には使用できません。   SHIFT+BREAK……リターン    画面はそのままにして、EXITのモニタに戻ります。 EXITモニタの拡張  このEXITモニタは$9500〜$9E31を使用しています。  そしてモニタのコマンは、あと最大10種増すことが可能です。  拡張法は、まずコマンドテーブルの空きエリア($9D63〜$9D80の30バイト)に、  順にコマンド1文字のASCIIコード、  そのキーに対する飛び先のアドレスを下位、上位順に並びます。  次に$951B番地に全コマンド数(現在は9)をストアします。  あとの10個増せますので最高$13となります。 図 HEXキーパッド  +−−−−−−−−−+  | | | | | |  +−+−+−+−+−+  |7|8|9|A| |  +−+−+−+−+−+  |4|5|6|B| |  +−+−+−+−+−+  |1|2|3|C| |  +−+−+−+−+−+  |0|F|E|D| |  +−−−−−−−−−+ モニタのコマンドサマリ  E xxxx xxxxから一画面分ダンプし、EXITモードへ  G xxxx xxxxのアドレスへジャンプ  C xxxx xxxxのサブルーチンをコール  S ファイルネーム(16字まで)を付けてオートースタート形式でテープにセーブ  L テープロード SHIFT+BREAKでこのモニタに戻ります  X ブロック転送します  M 128バイトごとのチェックサムを表示します  P xxxx yyyy プリンタの指定領域のチェックサム付ダンプを出力  SHIFT+BREAK SP−1002へ戻ります。 EXITモードのコマンドサマリ  J ダンプチェンジ カーソルが画面の最上段、左端に移る ここで新しいアドレスを入力  N ページチェンジ  U アスキー入力、カーソルが右のアスキー欄に移る、16進キー入力に戻るにはCLRキー  HOME カーソルを画面の最初のダンプ内容のところに移動  INST 4ビット単位のインサート  DEL 4ビット単位のデリート  CR カーソルが次の行の先頭に移動  SHIFT+BREAK モニタのコマンド待ちへ戻る、画面はそのまま